package idp

// 基础信息，也就是必须提供的信息，不同版本、系统的差异详细信息在其他结构体中体现

type Config struct {
	InnerNet    string `json:"innerNet"`    // 内网地址
	InterNet    string `json:"interNet"`    // 互联网地址
	NetLv       string `json:"netLv"`       // 网络优先级
	UniqueType  string `json:"uniqueType"`  // 唯一码生成方式
	UniqueValue string `json:"uniqueValue"` // 当前唯一码
	DeviceId    string `json:"deviceId"`    // 设备ID
	HttpEcho    int8   `json:"httpEcho"`    // http 心跳间隔
	OpenTcp     bool   `json:"openTcp"`     // 是否需要开启tcp长连接
}

type PcBaseInfo struct {
	Sys        Sys
	Cpu        Cpu
	Memory     []Memory
	Disk       []LogicDisk // windows 下去逻辑分区，linux的直接分区
	DiskSerial []string    // windows下有物理序列号，linux不一定有
	Network    Network
}

type Sys struct {
	HostName  string `json:"hostName"`  // 主机名,eg: hcy-pc
	OsName    string `json:"osName"`    // 系统名称，eg：Kylin
	OsVersion string `json:"osVersion"` // 系统版本，eg：银河麒麟桌面操作系统V10 (SP1)
	Kernel    string `json:"kernel"`    // 内核版本,eg: Linux version 5.4.18-96-generic (ljw@ljw54) (gcc version 9.3.0 (Ubuntu 9.3.0-10kylin2)) #85oemlxm70zg1ts10u SMP Fri Aug 25 14:26:48 CST 2023
	Arch      string `json:"arch"`      // 架构，eg：amd64
	Vendor    string `json:"vendor"`    //eg: 制造商:[LENOVO],产品型号:[90ULS00GKX],序列号:[KT00XCD7]}
	Product   string `json:"product"`   //eg: 制造商:[LENOVO],产品型号:[90ULS00GKX],序列号:[KT00XCD7]}
	Serial    string `json:"serial"`    // eg: 制造商:[LENOVO],产品型号:[90ULS00GKX],序列号:[KT00XCD7]}
}
type Cpu struct {
	Cpu          string `json:"cpu"`          // cpu,eg：Hygon C86 3250  8-core Processor
	CpuCores     int    `json:"cpuCores"`     // 核心数量
	CpuMhz       string `json:"cpuMhz"`       // 频率
	CpuId        string `json:"cpuId"`        // cpu id
	Manufacturer string `json:"manufacturer"` // 生产商
}
type Memory struct {
	SerialNumber string `json:"serialNumber"` // 序列号
	Size         uint64 `json:"size"`         // 大小
	Mhz          string `json:"mhz"`          // 频率
	Manufacturer string `json:"manufacturer"` // 生产商
}
type LogicDisk struct {
	SerialNumber string `json:"serialNumber"` // eg:2AF1A3B8 ,逻辑卷序列号，并非磁盘序列号。
	Total        uint64 `json:"size"`         // eg:255369482240 ,总空间
	Used         uint64 `json:"used"`         //  eg:88191721472,已使用
	DeviceId     string `json:"deviceId"`     //eg:C: , 在系统中的唯一标识符
	FileSystem   string `json:"fileSystem"`   //eg:NTFS , 磁盘格式
}

type Network struct {
	Ipv4 string `json:"ipv4"` // IP地址
	Mac  string `json:"mac"`  // 活跃网卡
	Dns  string `json:"dns"`  // dns
}
